(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
a(lambda(x), y) → lambda(a(x, p(1, a(y, t))))
a(p(x, y), z) → p(a(x, z), a(y, z))
a(a(x, y), z) → a(x, a(y, z))
a(id, x) → x
a(1, id) → 1
a(t, id) → t
a(1, p(x, y)) → x
a(t, p(x, y)) → y
Rewrite Strategy: FULL
(1) DecreasingLoopProof (EQUIVALENT transformation)
The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
a(lambda(x), y) →+ lambda(a(x, p(1, a(y, t))))
gives rise to a decreasing loop by considering the right hand sides subterm at position [0].
The pumping substitution is [x / lambda(x)].
The result substitution is [y / p(1, a(y, t))].
(2) BOUNDS(n^1, INF)
(3) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(4) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
a(lambda(x), y) → lambda(a(x, p(1', a(y, t))))
a(p(x, y), z) → p(a(x, z), a(y, z))
a(a(x, y), z) → a(x, a(y, z))
a(id, x) → x
a(1', id) → 1'
a(t, id) → t
a(1', p(x, y)) → x
a(t, p(x, y)) → y
S is empty.
Rewrite Strategy: FULL
(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(6) Obligation:
TRS:
Rules:
a(lambda(x), y) → lambda(a(x, p(1', a(y, t))))
a(p(x, y), z) → p(a(x, z), a(y, z))
a(a(x, y), z) → a(x, a(y, z))
a(id, x) → x
a(1', id) → 1'
a(t, id) → t
a(1', p(x, y)) → x
a(t, p(x, y)) → y
Types:
a :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
lambda :: lambda:1':t:p:id → lambda:1':t:p:id
p :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
1' :: lambda:1':t:p:id
t :: lambda:1':t:p:id
id :: lambda:1':t:p:id
hole_lambda:1':t:p:id1_0 :: lambda:1':t:p:id
gen_lambda:1':t:p:id2_0 :: Nat → lambda:1':t:p:id
(7) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
a
(8) Obligation:
TRS:
Rules:
a(
lambda(
x),
y) →
lambda(
a(
x,
p(
1',
a(
y,
t))))
a(
p(
x,
y),
z) →
p(
a(
x,
z),
a(
y,
z))
a(
a(
x,
y),
z) →
a(
x,
a(
y,
z))
a(
id,
x) →
xa(
1',
id) →
1'a(
t,
id) →
ta(
1',
p(
x,
y)) →
xa(
t,
p(
x,
y)) →
yTypes:
a :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
lambda :: lambda:1':t:p:id → lambda:1':t:p:id
p :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
1' :: lambda:1':t:p:id
t :: lambda:1':t:p:id
id :: lambda:1':t:p:id
hole_lambda:1':t:p:id1_0 :: lambda:1':t:p:id
gen_lambda:1':t:p:id2_0 :: Nat → lambda:1':t:p:id
Generator Equations:
gen_lambda:1':t:p:id2_0(0) ⇔ 1'
gen_lambda:1':t:p:id2_0(+(x, 1)) ⇔ lambda(gen_lambda:1':t:p:id2_0(x))
The following defined symbols remain to be analysed:
a
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol a.
(10) Obligation:
TRS:
Rules:
a(
lambda(
x),
y) →
lambda(
a(
x,
p(
1',
a(
y,
t))))
a(
p(
x,
y),
z) →
p(
a(
x,
z),
a(
y,
z))
a(
a(
x,
y),
z) →
a(
x,
a(
y,
z))
a(
id,
x) →
xa(
1',
id) →
1'a(
t,
id) →
ta(
1',
p(
x,
y)) →
xa(
t,
p(
x,
y)) →
yTypes:
a :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
lambda :: lambda:1':t:p:id → lambda:1':t:p:id
p :: lambda:1':t:p:id → lambda:1':t:p:id → lambda:1':t:p:id
1' :: lambda:1':t:p:id
t :: lambda:1':t:p:id
id :: lambda:1':t:p:id
hole_lambda:1':t:p:id1_0 :: lambda:1':t:p:id
gen_lambda:1':t:p:id2_0 :: Nat → lambda:1':t:p:id
Generator Equations:
gen_lambda:1':t:p:id2_0(0) ⇔ 1'
gen_lambda:1':t:p:id2_0(+(x, 1)) ⇔ lambda(gen_lambda:1':t:p:id2_0(x))
No more defined symbols left to analyse.